#ifndef MDX2_ATTACHMENT_H_
#define MDX2_ATTACHMENT_H_

#include <cstdint>
#include "Vector3D.h"
#include "MDX2_Animation.h"

// Attachment points (ID)
#define ATT_MOUNTPOINT           0
#define ATT_RIGHTPALM            1
#define ATT_LEFTPALM             2
#define ATT_RIGHTELBOW           3
#define ATT_LEFTELBOW            4
#define ATT_RIGHTSHOULDER        5
#define ATT_LEFTSHOULDER         6
#define ATT_RIGHTKNEE            7
#define ATT_LEFTKNEE             8
#define ATT_HELMET              11
#define ATT_BACK                12
#define ATT_BUST                15
#define ATT_BUST2               16
#define ATT_BREATH              17
#define ATT_NAME                18
#define ATT_GROUND              19
#define ATT_TOPHEAD             20
#define ATT_LEFTPALM2           21
#define ATT_RIGHTPALM2          22
#define ATT_RIGHTBACKSHEATH     26
#define ATT_LEFTBACKSHEATH      27
#define ATT_MIDBACKSHEATH       28
#define ATT_BELLY               29
#define ATT_LEFTBACK            30
#define ATT_RIGHTBACK           31
#define ATT_LEFTHIPSHEATH       32
#define ATT_RIGHTHIPSHEATH      33
#define ATT_BUST3               34
#define ATT_RIGHTPALM3          35
#define ATT_DEMOLISHERVEHICLE1  37
#define ATT_DEMOLISHERVEHICLE2  38
#define ATT_VEHICLESEAT1        39
#define ATT_VEHICLESEAT2        40
#define ATT_VEHICLESEAT3        41
#define ATT_VEHICLESEAT4        42

// Description: Defines attachment points on the model
//              They are indexed in the lookup table with
//              the ID as key.
// Count:  MDX2_Header->nAttachments
// Offset: MDX2_Header->ofsAttachments
// Lookup: AttachLookup
struct MDX2_Attachment
{
    uint32_t ID;
    uint32_t Bone;
    Vec3F Position;
    MDX2_ABlock Data;
};

#endif // MDX2_ATTACHMENT_H_